Following the design and coding of a software application for use with a computer system, the software is usually tested in the development environment or in actual field trials. One of the purposes of such testing is to detect any error or undesirable performance characteristics in the code. Time is often a factor in limiting the thoroughness with which an application is tested, due to many variables including too many code paths, too many operating systems, too many kinds of clients, etc. For some software, the problem of time is not one of schedule or resources. The performance of some software applications does not lend itself easily to short term diagnostic testing. Such software applications interact with users over long time periods and the history of these interactions influences software behavior. For example, in a collaborative filtering application that suggests merchandise by comparing a person's buying patterns to those of other people, defects may not surface until months or years of buying data have been collected, yet few developments projects can afford to spend so long testing the system. Accordingly, a need exists for a technique to test the performance of software which normally would take an extended period of time to observe. Another a need exists for a technique to compress the testing time for certain software, including knowledge management products, to a rate faster than one second per second.